# -*- coding: utf-8 -*-


from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker


# sqlite数据库
SQLALCHEMY_DATABASE_URL = 'sqlite:///./coronavirus.sqlite3'
# SQLALCHEMY_DATABASE_URL = 'postgresql://username:password@host:port/dateabase_name'

# 创建引擎


engine = create_engine(
    url=SQLALCHEMY_DATABASE_URL,
    encoding="utf-8",
    # 表示引擎将用repr()函数记录所有语句及其参数到列表
    echo=True,
    # 由于sqlalchemy是多线程，{"check_same_thread": False} 让建立的对象任意线程都可以使用
    connect_args={"check_same_thread": False}
)

SessionLocal = sessionmaker(
    bind=engine,
    # autoflush是发送sql语句到数据库，但是数据不一定写入到磁盘
    autoflush=False,
    # autocommit是提交事务
    autocommit=False,
    expire_on_commit=True,
    info=None
)

# 创建基本映射类
Base = declarative_base(bind=engine, name="Base")


